<?php

/**
 *  Klass för att hantera arrayer
 */
class ArrayHandler {
	//en funktion som vänder på ordningen på en array
	//tex. array("Kalle", "Nisse", "Olle") skall bli array("Olle", "Nisse", "Kalle");
	public function ReverseArray($array) {

		$result = $array;
		$length = count($array);

		foreach ($array as $value) {
			$result[($length - 1)] = $value;
			$length--;
		}
		return $result;
	}

	//en funktion som returnerar sista elementet i en array
	public function ReturnLastItem($array) {
		if (count($array) == 0) {
			return null;
		} else {
			foreach ($array as $var) {
				$lastElement = $var; //Får nytt värde ända tills det sista elementet.
			}
			return $lastElement;
		}
	}

	//En funktion för test av funktionerna i array.php
	public function Test() {

		//Testa TestMyReturnLastItem, skicka in parametrarna testarrayen och parameter för sista elementet.
		if ($this -> TestMyReturnLastItem(array(1, 2, 3, 4, 5, 6, 7), 7)) {
			return true;
		} elseif ($this -> TestMyReturnLastItem(array(1, 2, 3, 4, 5, 6, "Nisse"), "Nisse")) {
			return true;
		} elseif ($this -> TestMyReturnLastItem(array()) == null) {
			return true;
		}

		//Testa ReverseArray, skicka in parametrarna testarrayen och parameter för vad det ska bli baklänges.
		elseif ($this -> TestMyReversedArray(array(1, 2, 3, 4, 5, 6, 7), array(7, 6, 5, 4, 3, 2, 1))) {
			return true;
		} elseif ($this -> TestMyReversedArray(array(3, 2, 3, 4, 5, 6, 7), array(7, 6, 5, 4, 3, 2, 3))) {
			return true;
		} elseif (count($this -> ReverseArray(array()) == null)) {
			return true;
		} else {
			return false;
		}
	}

	//Testa ReturnLastItem
	public function TestMyReturnLastItem($testArray, $myLastElement) {

		$MLastElement = $this->ReturnLastItem($testArray);
		if ($MLastElement != $myLastElement) {
			echo "ReturnLastItem test misslyckades: felaktigt returvärde </br>";
			return false;
		}
		return true;
	}

	public function TestMyReversedArray($testArray, $reversedArray) {

		$resultArray = $this -> ReverseArray($testArray);

		for ($i = 0; $i < count($reversedArray); $i++) {
			if (isset($resultArray[$i]) == false) {
				echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
				return false;
			} else if ($resultArray[$i] != $reversedArray[$i]) {
				echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
				return false;
			}
			return true;
		}
	}
}
